package main

import(
	"container/list"
	"fmt"
)

func main()  {
	// 声明链表，go 的 list 底层也是用双向循环链表是现实的，再尾部追加用 PushBack（）
	l := list.New()

	// 尾部添加元素
	l.PushBack(1)
	l.PushBack(2)
	l.PushBack(3)

	// 遍历
	for e := l.Back(); e != nil ; e = e.Prev(){
		fmt.Printf("%v\n", e.Value)
	}

	// 删除元素
	l.Remove(l.Back())

	// 遍历
	for e := l.Back(); e != nil ; e = e.Prev(){
		fmt.Printf("%v\n", e.Value)
	}

	// 合并链表
	l2 := list.New()
	l2.PushBack(4)
	l2.PushBack(5)
	l2.PushBack(6)

	l2.PushBackList(l)

	fmt.Printf("merge after l================\n")
	for e := l.Front(); e != nil; e = e.Next() {
		fmt.Printf("%d\n", e.Value.(int))
	}

	fmt.Printf("merge after l2================\n")
	for e := l2.Front(); e != nil; e = e.Next() {
		fmt.Printf("%d\n", e.Value.(int))
	}
}



